﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
using Entity = SoTaiChinh.Library.Entity;
using Business = SoTaiChinh.Library.Business;
using Common = SoTaiChinh.Library.Common.Algorithm;
using System.Diagnostics;
public partial class templates_admin_usercontrols_addvideo : System.Web.UI.UserControl
{
    Entity.Video clsE_Video = new SoTaiChinh.Library.Entity.Video();
    Business.Video clsB_Video = new SoTaiChinh.Library.Business.Video();
    Entity.ChuDe clsE_ChuDe = new SoTaiChinh.Library.Entity.ChuDe();
    Business.ChuDe clsB_ChuDe = new SoTaiChinh.Library.Business.ChuDe();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Alert.Load_DropDownList(ddlThuVien, clsB_ChuDe.SelectChuDeVideo(), "TenChuDe", "IdChuDe", "------Chọn chủ đề------");
            string action = Request.QueryString["action"].ToString();
            if (action == "add")
            {
                lbTitle.Text = "Thêm mới video";
                setVisible(true);
            }
            //Nếu là sửa
            if (action == "edit")
            {
                setVisible(false);
                lbTitle.Text = "Sửa nội dung video";
                int info = Convert.ToInt32(Request.QueryString["info"].ToString());
                clsE_Video.IdVideo = info;
                DataTable dtHinh = clsB_Video.SelectPrimarykey(clsE_Video);
                txtMoTa.Text = dtHinh.Rows[0]["GioiThieu"].ToString();
                ddlThuVien.SelectedValue = dtHinh.Rows[0]["IdChuDe"].ToString();
                lbTenFile.Text = dtHinh.Rows[0]["TenFile"].ToString();
                ImbHinhAnh.ImageUrl = "~/uploads/videosupload/" + dtHinh.Rows[0]["HinhAnhMoTa"].ToString();
            }
        }

    }
    private void setVisible(bool set)
    {
        ImbHinhAnh.Visible = !set;
        upload.Visible = set;

    }
    private void setThemChuDe(bool set)
    {
        ddlThuVien.Visible = !set;
        btnThemChuDe.Visible = !set;
        btnXoaChuDe.Visible = !set;
        txtTenChuDe.Visible = set;
        btnLuuChuDe.Visible = set;
        btnTroVe.Visible = set;

    }
    private bool check()
    {
        bool kiemtra = true;
        if (fuVideo.FileName == "")
        { Alert.Show("Bạn chưa chọn video để đăng"); kiemtra = false; }
        else if (btnLuuChuDe.Visible == true)
        { Alert.Show("Bạn hãy lưu và chọn chủ đề cho video trước"); kiemtra = false; }
        else if (ddlThuVien.SelectedValue == "0")
        { Alert.Show("Bạn chưa chọn chủ đề cho video"); kiemtra = false; }
        else if (txtMoTa.Text == "")
        { Alert.Show("Bạn chưa giới thiệu về video"); kiemtra = false; }
        return kiemtra;
    }
    protected void btnLuu_Click(object sender, EventArgs e)
    {
        bool save = false;
        string str = "~/uploads/videosupload/";
        string action = Request.QueryString["action"].ToString();
        clsE_Video.IdVideo = Convert.ToInt32(Request.QueryString["info"].ToString());        
        string filePath = Server.MapPath(str + fuVideo.FileName);
        string thumbnail="";
        if (fuVideo.FileName != "")
        {
            clsE_Video.TenFile = fuVideo.FileName;
            string withoutext = Path.GetFileNameWithoutExtension(fuVideo.FileName);
            clsE_Video.HinhAnhMoTa = withoutext + ".jpg";
            thumbnail = Server.MapPath(str + withoutext + ".jpg");
        }
        else
        {
            clsE_Video.TenFile = lbTenFile.Text;
            clsE_Video.HinhAnhMoTa = Path.GetFileNameWithoutExtension(lbTenFile.Text)+".jpg";
        }
        clsE_Video.IdChuDe = Convert.ToInt32(ddlThuVien.SelectedValue);
        clsE_Video.GioiThieu = txtMoTa.Text;
        clsE_Video.LuotXem = 0;
        clsE_Video.TrangThai = true;
        clsE_Video.NgayDang = DateTime.Now;
        if (action == "add")
        {
            if (check())
            {
                
                if (fuVideo.HasFile)
                {   // bỏ đuôi file

                    TaoHinhChoViDeo(fuVideo, filePath, thumbnail);                 
                    save = clsB_Video.Insert(clsE_Video);
                    if (save)
                    { Alert.Show("Thêm mới video thành công !!!"); }
                    else
                    { Alert.Show("Thêm mới video không thành công !!!"); }
                }
            }
        }
            if (action == "edit")
            {
                if (fuVideo.FileName != "")
                {
                    File.Delete(Server.MapPath("~/uploads/videosupload/" + lbTenFile.Text));
                    File.Delete(Server.MapPath("~/uploads/videosupload/" + Path.GetFileNameWithoutExtension(lbTenFile.Text)+".jpg"));
                    fuVideo.SaveAs(Server.MapPath(str + fuVideo.FileName));
                    TaoHinhChoViDeo(fuVideo, filePath, thumbnail);
                }
                save = clsB_Video.Update(clsE_Video);
                if (save)
                { Alert.Show("Sửa thông tin video thành công !!!"); }
                else
                { Alert.Show("Sửa thông tin video không thành công !!!"); }
            }
    }
     
    
    private void TaoHinhChoViDeo(FileUpload fu, string filePath, string thumbnail)
    {
        fuVideo.SaveAs(filePath);
        //create a thumbnail image from video uploaded.
        Process ffmeg = new Process();
        ffmeg.StartInfo.Arguments = " -i \"" + filePath + "\" -s 100*100  -vframes 1 -f image2 -vcodec mjpeg \"" + thumbnail + "\"";
        ffmeg.StartInfo.FileName = Page.MapPath("~/uploads/videosupload/Mpeg/ffmpeg.exe");
        ffmeg.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        ffmeg.Start();
        ffmeg.WaitForExit();
        ffmeg.Close();
        ffmeg.Dispose();
 
    }
    protected void btnQuayLai_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/admin/listvideos.aspx");
    }
    protected void btnThemChuDe_Click(object sender, EventArgs e)
    {
        setThemChuDe(true);
    }
    protected void btnXoaChuDe_Click(object sender, EventArgs e)
    {
        bool delete = false;
        if (ddlThuVien.SelectedValue != "0")
        {
            clsE_ChuDe.IdChuDe = Convert.ToInt32(ddlThuVien.SelectedValue);
            delete = clsB_ChuDe.Delete(clsE_ChuDe);
            if (delete)
            {
                Alert.Show("Xóa chủ đề thành công !!!");
                Alert.Load_DropDownList(ddlThuVien, clsB_ChuDe.SelectChuDeVideo(), "TenChuDe", "IdChuDe", "------Chọn chủ đề------");
            }
            else
            {
                Alert.Show("Xóa chủ đề thành công !!!");
            }
        }
        else
        { Alert.Show("Bạn chưa chọn chủ đề cần xóa !!!"); }
    }
    protected void btnTroVe_Click(object sender, EventArgs e)
    {
        setThemChuDe(false);
    }
    protected void btnLuuChuDe_Click(object sender, EventArgs e)
    {
        bool save = false;
        if (txtTenChuDe.Text == "")
        {
            Alert.Show("Bạn chưa nhập tên chủ đề");
        }
        else
        {
            clsE_ChuDe.TenChuDe = txtTenChuDe.Text;
            clsE_ChuDe.ChuDeVideo = true;
            clsE_ChuDe.ChuDeTaiNguyen = false;
            clsE_ChuDe.ChuDeHinhAnh = false;
            clsE_ChuDe.ChuDeHinhAnh = false;
            save = clsB_ChuDe.Insert(clsE_ChuDe);
            if (save)
            {
                Alert.Show("Thêm chủ đề thành công !!!");
                Alert.Load_DropDownList(ddlThuVien, clsB_ChuDe.SelectChuDeVideo(), "TenChuDe", "IdChuDe", "------Chọn chủ đề------");
                setThemChuDe(false);
            }
            else
            {
                Alert.Show("Thêm chủ đề không thành công !!!");
                setThemChuDe(false);

            }
        }
    }
    protected void ImbHinhAnh_Click(object sender, ImageClickEventArgs e)
    {
        setVisible(true);
    }
}
